﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
using ComunesMGI.DataTypes;
using System.Configuration;

namespace MGI.AccesoDatos
{
    public class DAOSistemas : IDatosSistemas
    {
        public List<DataSistema> getSistemas(DataCliente cliente) 
        {
            //string pathClientesInfo = "C:\\Documents and Settings\\Administrator\\My Documents" + "\\MGI REPOSITORIO\\Proyecto\\Implementacion\\Desarrollo\\INFOCLIENTES";
            string pathClientesInfo = ConfigurationManager.AppSettings.Get("pathInfoClientes");
            DirectoryInfo dirInfo = new DirectoryInfo (pathClientesInfo);
            if (!dirInfo.Exists)
            {
                throw new Exception("No existe el directorio con informacion de clientes");
            }
            else
            {
                string pathInfoCliente = pathClientesInfo + "\\" + cliente.Nombre;
                DirectoryInfo dirInfoCliente = new DirectoryInfo(pathInfoCliente);
                if (dirInfoCliente.Exists)
                {
                    FileInfo[] filesSistemas = dirInfoCliente.GetFiles();
                    List<DataSistema>  sistemas = new List<DataSistema>();
                    foreach(FileInfo fileSistema in filesSistemas )
                    {
                        XmlDocument xDoc = new XmlDocument();
                        xDoc.Load(pathInfoCliente + "\\" + fileSistema.Name );
                        XmlNodeList listaNodoSistema = xDoc.GetElementsByTagName("sistema");
                        XmlNodeList listaNodoNombre = ((XmlElement)listaNodoSistema[0]).GetElementsByTagName("nombre");
                        XmlElement nodoNombre = (XmlElement)listaNodoNombre[0];

                        

                        XmlNodeList listaNodoSitio = ((XmlElement)listaNodoSistema[0]).GetElementsByTagName("sitio");
                        XmlElement nodoSitio =(XmlElement)listaNodoSitio[0];

                        //XmlNodeList listaNodoListas = ((XmlElement)listaNodoSistema[0]).GetElementsByTagName("listas");
                        //XmlNodeList listaNodoIncidentes =((XmlElement)listaNodoListas[0]).GetElementsByTagName("incidentes");
                        //XmlNodeList listaNodoTitulo = ((XmlElement)listaNodoIncidentes[0]).GetElementsByTagName("titulo");
                        //XmlElement nodoTitulo =(XmlElement)listaNodoTitulo[0];

                        DataSistema datosSistema = new DataSistema(nodoNombre.InnerText , nodoSitio.InnerText);
                        sistemas.Add(datosSistema);

                    }
                    return sistemas;                      
                }
                else
                {
                    throw new Exception("No existe el cliente especificado");
                }
            }
        }

        public bool containSistema(DataCliente cliente, DataSistema sistema) {

            //string pathClientesInfo = "C:\\Documents and Settings\\Administrator\\My Documents" + "\\MGI REPOSITORIO\\Proyecto\\Implementacion\\Desarrollo\\INFOCLIENTES";
            string pathClientesInfo = ConfigurationManager.AppSettings.Get("pathInfoClientes");
            string pathInfoCliente = pathClientesInfo + "\\" + cliente.Nombre;
            string pathInfoSistema = pathInfoCliente + "\\" + sistema.Nombre + ".xml";
            FileInfo fileInfoSistema = new FileInfo(pathInfoSistema);
            return fileInfoSistema.Exists;
                
        }
    }
}